﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using HHo_Model;
using HHo_Negocio;
using System.Collections.Generic;

public partial class mantenimientos_Origen_wfDataOrigen : System.Web.UI.Page
{
    GestorOrigen oGesOrigen;
    E_Origen eOrigen;

    protected void Page_Load(object sender, EventArgs e)
    {
        ClientScriptManager cs = Page.ClientScript;
        if (!Page.IsPostBack)
        {
            if (Request.QueryString["cop"] != null)
            {
                hidOp.Value = Request.QueryString["cop"];
                if(Request.QueryString["cid"]!= null)
                    hidID.Value = Request.QueryString["cid"];

                switch (hidOp.Value)
                {
                    case "0M"://StringConstantes.MAN_OPE_MODIF :
                        lblOperacion.Text = "Modificación";
                        PoblarCampos(Int32.Parse(hidID.Value));
                        break;
                    case "1N": //StringConstantes.MAN_OPE_NUEVO :
                        lblOperacion.Text = "Nuevo";                        
                        ActivarEdicion(true);
                        break;
                    case "2D": //StringConstantes.MAN_OPE_DETALLE :
                        lblOperacion.Text = "Detalles";
                        PoblarCampos(Int32.Parse(hidID.Value));
                        ActivarEdicion(false);
                        btnGrabar.Enabled = false;
                        break;
                    case "3E": //StringConstantes.MAN_OPE_ELIM :
                        lblOperacion.Text = "Eliminar";
                        PoblarCampos(Int32.Parse(hidID.Value));
                        lblEstado.Text = "Eliminado";
                        ManejarClickGrabar();
                        break;
                    case "4R":
                        lblOperacion.Text = "Activar Origen";
                        PoblarCampos(Int32.Parse(hidID.Value));
                        lblEstado.Text = "Activo";
                        ManejarClickGrabar();
                        break;
                }
            }
            else
            {
                cs.RegisterStartupScript(this.GetType(), "Close", "CloseNoPermitido()",true);
                return;
            }

        }
    }

    private void PoblarCampos(int Id)
    {
        oGesOrigen = new GestorOrigen();
        eOrigen = new E_Origen();
        List<E_Origen> lstOrigen;
        eOrigen.Id = Id;
        lstOrigen = oGesOrigen.ListarOrigen(Id);

        if (lstOrigen.Count > 0)
        {
            txtCod.Text = lstOrigen[0].Codigo;
            txtDesc.Text = lstOrigen[0].Descripcion;
            lblId.Text = lstOrigen[0].Id.ToString();
            if (lstOrigen[0].Estado.ToString()=="0")
                lblEstado.Text = "Eliminado";
            else
                lblEstado.Text = "Activo";
            
            if(lstOrigen[0].EsObligatorioComponente =="1")
                chkObligatorioComp.Checked = true;
            if(lstOrigen[0].EsObligatorioDiferido == "1")
                chkTieneDiferido.Checked = true;
        }
    }

    private bool ValidarCampos()
    {
        bool returnValue = true;
        if (txtCod.Text.Trim().Length <= 0)
            returnValue = false;
        if (txtDesc.Text.Trim().Length <= 0)
            returnValue = false;

        return returnValue;
    }

    private void ActivarEdicion(bool isEditable)
    {
        txtCod.ReadOnly = !isEditable;
        txtDesc.ReadOnly = !isEditable;
        chkObligatorioComp.Enabled = isEditable;
        chkTieneDiferido.Enabled = isEditable;
    }

    private bool Grabar()
    {
        bool returnValue = false;
        if (hidOp.Value != null)
        {
            if ((hidOp.Value == StringConstantes.MAN_OPE_MODIF) || (hidOp.Value == StringConstantes.MAN_OPE_ELIM)
                || (hidOp.Value == StringConstantes.MAN_OPE_REACTIV))
            {
                if (hidID.Value != null)
                {
                    eOrigen = new E_Origen();
                    oGesOrigen = new GestorOrigen();

                    eOrigen.Id = Int32.Parse(hidID.Value);
                    eOrigen.Codigo = txtCod.Text;
                    eOrigen.Descripcion = txtDesc.Text;
                    if (lblEstado.Text == "Eliminado")
                        eOrigen.Estado = "0";
                    else
                        eOrigen.Estado = "1";

                    if(chkObligatorioComp.Checked)
                        eOrigen.EsObligatorioComponente = "1";
                    else
                        eOrigen.EsObligatorioComponente = "0";
                    if(chkTieneDiferido.Checked)
                        eOrigen.EsObligatorioDiferido = "1";
                    else
                        eOrigen.EsObligatorioDiferido = "0";
                    try
                    {
                        oGesOrigen.Man_ModificaOrigen(eOrigen);
                        returnValue = true;
                    }
                    catch (Exception ex)
                    {
                        throw;
                    }
                }
                else
                {
                    returnValue = false;
                }
            }
            else
            {
                if (hidOp.Value == StringConstantes.MAN_OPE_NUEVO)
                {
                    if (hidID.Value != null)
                    {
                        eOrigen = new E_Origen();
                        oGesOrigen = new GestorOrigen();

                        eOrigen.Codigo = txtCod.Text;
                        eOrigen.Descripcion = txtDesc.Text;                        
                        eOrigen.Estado = "1";

                        if (chkObligatorioComp.Checked)
                            eOrigen.EsObligatorioComponente = "1";
                        else
                            eOrigen.EsObligatorioComponente = "0";
                        if (chkTieneDiferido.Checked)
                            eOrigen.EsObligatorioDiferido = "1";
                        else
                            eOrigen.EsObligatorioDiferido = "0";
                        
                        try
                        {
                            oGesOrigen.Man_RegistraOrigen(eOrigen);
                            returnValue = true;
                        }
                        catch (Exception ex)
                        {
                            throw;
                        }
                    }
                    else
                    {
                        returnValue = false;
                    }
                }
                else
                {
                    returnValue = false;
                }
            }
        }
        else
        {
            returnValue = false;
        }
        return returnValue;
    }

    private void ManejarClickGrabar()
    {
        ClientScriptManager cs = Page.ClientScript;
        if (ValidarCampos())
        {
            try
            {
                Grabar();
                cs.RegisterStartupScript(this.GetType(), "CofirmarClose", "ConfirmacionClose()", true);
            }
            catch (Exception ex)
            {
                cs.RegisterStartupScript(this.GetType(), "ExceptionGrabar", "alert('Errores internos han impedido la grabacion, por favor notifique al administrador " + ex.Message + "')", true);
            }
        }
        else
        {
            cs.RegisterStartupScript(this.GetType(), "ValidarGrabar", "alert('Los datos de codigo y descriopcion no deben estar vacios')", true);
        }
    }

    protected void btnGrabar_Click(object sender, EventArgs e)
    {
        ManejarClickGrabar();
    }
}
